package com.orangelife.service.propFeeReductionInfo;

import java.util.List;
import java.util.Map;

import com.orangelife.exception.AppBizException;
import com.orangelife.service.propFeeReductionInfo.model.PropFeeReductionInfoDto;
import com.orangelife.webservice.service.propFeeReductionInfo.entity.ReductionInfoDto;

/*****************************************************************
 * Copyright(C) ORANGELIFE Corporation 2015. All Rights Reserved.
 *****************************************************************/
/*
 * ============================================================== 功能名
 * PropFeeReductionInfo类的 service层的增删改查
 * 
 * @author @author
 * 
 * @version 1.1.0
 * 
 * @date 2016-11-24 14:19:57
 * ==============================================================
 */
public interface IPropFeeReductionInfoService {

	/**
	 * 用途 添加propFeeReductionInfo（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:19:57
	 * @param propFeeReductionInfo
	 * @return
	 * @throws AppBizException
	 */
	public int addPropFeeReductionInfo(
			PropFeeReductionInfoDto propFeeReductionInfo)
			throws AppBizException;

	/**
	 * 用途 添加propFeeReductionInfo（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:19:57
	 * @param propFeeReductionInfo
	 * @return
	 * @throws AppBizException
	 */
	public int addPropFeeReductionInfoAndDetail(
			ReductionInfoDto reductionInfoDto) throws AppBizException;

	/**
	 * 用途 添加propFeeReductionInfo（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:19:57
	 * @param propFeeReductionInfo
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getReductionInfo(
			Map<String, Object> param, int pageIndex, int pageSize)
			throws AppBizException;

	/**
	 * 用途 修改propFeeReductionInfo（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:19:57
	 * @param propFeeReductionInfo
	 * @return
	 * @throws AppBizException
	 */

	public int editPropFeeReductionInfo(
			PropFeeReductionInfoDto propFeeReductionInfo)
			throws AppBizException;

	/**
	 * 用途 单个查询 （橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:19:57
	 * @param propFeeReductionInfoID
	 * @return
	 * @throws AppBizException
	 */

	public PropFeeReductionInfoDto findPropFeeReductionInfoByID(
			String propFeeReductionInfoID) throws AppBizException;

	/**
	 * 用途 逻辑删除（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:19:57
	 * @param propFeeReductionInfoID
	 * @return
	 * @throws AppBizException
	 */
	public int deletePropFeeReductionInfoByLogic(String propFeeReductionInfoID)
			throws AppBizException;

	/**
	 * 用途 查询列表 （橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizExceptionception
	 */
	public List<Map<String, Object>> findPropFeeReductionInfoByPage(
			String commID, String searchType, String startTime, String endTime,
			String status, String tsCreate, String search, int pageNo,
			int pageSize) throws AppBizException;

	/**
	 * 用途 查询列表（返回对对象）（橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizException
	 */
	public List<PropFeeReductionInfoDto> getPropFeeReductionInfoByPage(
			String tsCreate, String search, int pageNo, int pageSize)
			throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeReductionInfo（橙子生活）(返回Map<String, Object>)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * @param reductionID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param apartmentID
	 *            (非必填字段)
	 * 
	 * @param status
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> selectPropFeeReductionInfoByRelevantID(
			String reductionID, String commID, String apartmentID, String status)
			throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeReductionInfo（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * @param reductionID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param apartmentID
	 *            (非必填字段)
	 * 
	 * @param status
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeReductionInfoDto> findPropFeeReductionInfoByRelevantID(
			String reductionID, String commID, String apartmentID, String status)
			throws AppBizException;

	/**
	 * 用途 批量查询propFeeReductionInfo（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeReductionInfoDto> bauthfindPropFeeReductionInfo(
			List<String> propFeeReductionInfoIDs) throws AppBizException;

	/**
	 * 用途 批量查询propFeeReductionInfo（橙子生活）(返回Map)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> bauthfindPropFeeReductionInfoByMap(
			Map<String, Object> propFeeReductionInfo) throws AppBizException;

	/**
	 * 用途 清除
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public void clearCache() throws AppBizException;

	/**
	 * 用途 查询列表 （橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizExceptionception
	 */
	public List<Map<String, Object>> getEffectReductionInfo(String commID,
			String apartmentID, int pageNo, int pageSize)
			throws AppBizException;

	/**
	 * 用途 查询列表 （橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:19:57
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizExceptionception
	 */
	public void autoReduction() throws AppBizException;

	/***
	 * 同步减免减免信息到财务中心
	 * 
	 * @param parMap
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> synchpReductionData(
			Map<String, Object> parMap) throws AppBizException;

}